package com.doublethread.easymart.modules.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.doublethread.easymart.modules.user.dto.AddressDTO;
import com.doublethread.easymart.modules.user.entity.UserAddress;
import com.doublethread.easymart.modules.user.vo.UserAddressVO;

import java.util.List;

/**
 * 地址服务接口
 */
public interface AddressService extends IService<UserAddress> {

    /**
     * 获取用户地址列表
     */
    List<UserAddressVO> getUserAddressList(Long userId);

    /**
     * 获取地址详情
     */
    UserAddressVO getAddressById(Long userId, Long addressId);

    /**
     * 创建收货地址
     */
    UserAddressVO createAddress(Long userId, AddressDTO addressDTO);

    /**
     * 更新收货地址
     */
    void updateAddress(Long userId, Long addressId, AddressDTO addressDTO);

    /**
     * 删除收货地址
     */
    void deleteAddress(Long userId, Long addressId);

    /**
     * 设置默认地址
     */
    void setDefaultAddress(Long userId, Long addressId);

    /**
     * 获取默认地址
     */
    UserAddressVO getDefaultAddress(Long userId);

    /**
     * 检查地址归属权限
     */
    UserAddress checkAddressOwnership(Long userId, Long addressId);

    /**
     * 检查地址数量限制
     */
    long checkAddressLimit(Long userId);

    /**
     * 构建完整地址
     * 拼接省市区和详细地址
     *
     * @param address 地址实体
     * @return 完整地址字符串
     */
    String buildFullAddress(UserAddress address);
}
